home *** CD-ROM | disk | FTP | other *** search
/ Archive Magazine CD 1995 / Archive Magazine CD 1995.iso / discs / prog_disc / volume_3 / issue06 / comp / comp_dec89 / csingleton (.txt) < prev    next >
Encoding:
RISC OS BBC BASIC V Source  |  1990-01-15  |  2.9 KB  |  155 lines

  1.  > $.Comp_Dec89.CSingleton
  2. *FX225,1
  3. (*KEY0 *EXEC $.SCREENSUBS |M GOTO7 |M
  4. *FX153,0,128
  5. Work%256
  6. V%=640000:V%-=V%
  7. W% V%
  8. C%(10),I%(10),F%(10),O%(10),A%(10),B%(10)
  9. R%(256)
  10. INIT("C R J Singleton","POURING PROGRAM")
  11. C%()=(0):I%()=(0):F%()=(0)
  12. 10,3);"Clearing Work Space ..."
  13. x2X$=
  14. (0)):
  15. V%-250
  16. 250:$(W%+I%)=X$:
  17. CLS:I%=1:T%=0
  18. ENTER("Capacity of largest container",0,3,
  19. (C%(1)),
  20. (27)):
  21. Y%=27
  22. C%(1)=X%:
  23. LIST(1)
  24. I%+=1:
  25. ENTER("Capacity of next container",0,3,
  26. (C%(I%)),
  27. (27)):
  28. Y%=27
  29. C%(I%)=X%:
  30. LIST(I%):
  31. I%<10
  32. I%+=1
  33. =N%=I%-1:
  34. N%<10
  35. I%=N%+1
  36. 10:C%(I%)=0:I%(I%)=0:F%(I%)=0:
  37. ENTER("Initial contents of largest container",0,3,
  38. (I%(1)),
  39. (27)):
  40. Y%=27
  41. I%(1)=X%:
  42. LIST(N%)
  43. I%=1:T%=I%(1)
  44. 3I%+=1:X$="Initial contents of container "+
  45. ENTER(X$,0,3,
  46. (I%(I%)),
  47. (27)):
  48. Y%=27
  49. I%(I%)=X%:T%+=X%:
  50. LIST(N%):
  51. I%<N%
  52. ENTER("Final contents of largest container",0,3,
  53. (F%(1)),
  54. (27)):
  55. Y%=27
  56. F%(1)=X%:
  57. LIST(N%)
  58. 1I%+=1:X$="Final contents of container "+
  59. I%=N%
  60. F%(I%)=T%:
  61. N%-1:F%(I%)-=F%(X%):
  62. X%:C%=F%(I%)
  63. ENTER(X$,0,3,
  64. (F%(I%)),
  65. (27)):
  66. Y%=27
  67. F%(I%)=X%:
  68. LIST(N%):
  69. I%<N%
  70. >O%()=(0):O%(2)=1:
  71. N%:O%(I%)=O%(I%-1)*(C%(I%-1)+1):
  72. (H%=O%(N%)*(C%(N%)+1):
  73. H%>V%
  74. (C%<0)
  75. (C%<>F%(N%))
  76. *FX229,0
  77. *FX225,1
  78. ,+R%=1:A%()=I%():I%=
  79. POINT(A%()):W%?I%=R%
  80. Q%=0:
  81. POINT(F%()):O%=0
  82. R%+=1:E%=0:I%=-1:W%?H%=R%-1
  83. :I%+=1:
  84. W%?I%=R%-1
  85. I%=H%
  86. REV(I%,A%())
  87. J%=K%
  88. A%(J%)=0
  89. A%(K%)=C%(K%)
  90. X%=A%(J%):
  91. X%>(C%(K%)-A%(K%))
  92. X%=C%(K%)-A%(K%)
  93. B%()=A%():B%(J%)-=X%:B%(K%)+=X%:Y%=
  94. POINT(B%()):
  95. W%?Y%=0
  96. E%+=1:W%?Y%=R%:Q%+=1:
  97. Y%=P%
  98. O%=1:
  99.  PROCTIME:OFF:PRINTTAB(40,3) Q% " final conditions found"
  100. TIME:
  101. 10,3) R%-1 " pourings examined    ";Q%;" final conditions found"
  102. POINT(F%())
  103. Y%=W%?X%-1
  104.     F%=Y%
  105. 10,10+N%) Y% " pourings required"
  106. R%()=(0)
  107. POINT(F%()):R%=W%?Q%-1:R%(R%)=Q%
  108. R%<>F%
  109. R%=R%
  110. REV(Q%,B%())
  111. (I%=J%)
  112. (B%(J%)=0)
  113. B%(J%):A%()=B%():A%(I%)+=K%:A%(J%)-=K%:
  114. A%(I%)>C%(I%)
  115. (K%<A%(I%))
  116. (B%(J%)<C%(J%))
  117. 5%X%=
  118. POINT(A%()):
  119. (W%?X%)<>R%
  120. E%+=1:Q%=X%:R%(R%-1)=X%
  121. *FX3,10
  122. 27,64
  123. :@%=4:
  124.  "                  ";:
  125.  C%(J%);:
  126. A%()=I%():I%=0
  127. v9@%=4:
  128.  "          " I% "    ";:
  129.  A%(J%);:
  130. )I%+=1:
  131. I%<=F%
  132. REV(R%(I%),A%()):
  133. :X%=(
  134.  "          " X% "  Secs"
  135. *FX3,0
  136. *FX225,1
  137. *FX229,0
  138. "$.Comp_Menu"
  139. LIST(Z%)
  140. #7(@%=8:
  141. 21,7)"Capacity  Start Finish"
  142. C%(X%)>0
  143. 10,8+X%) X% C%(X%) I%(X%) F%(X%)
  144. POINT(X%()):
  145. X%,I%
  146. +X%=0:
  147. N%:X%+=X%(I%)*O%(I%):
  148. I%:=X%
  149. REV(X%,X%()):
  150. QX%()=(0):X%(1)=T%:
  151. I%=N%
  152. -1:X%(I%)=X%
  153. O%(I%):X%=X%
  154. O%(I%):X%(1)-=X%(I%):
  155.